<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <button @click="add">添加</button>
        <button @click="change">修改下标1里的属性</button>
        <ul>
            <li v-for="item in list">{{ item }}</li>
        </ul>
    </div>

    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data() {
                return {
                    list: [
                        { name: '刘备', job: '打野' },
                        { name: '关羽', job: '对抗路' },
                        { name: '黄忠', job: '发育路' }
                    ]
                }
            },
            watch: {
                
                // list () {
                //     console.log('list有变化了')
                // }
                // 假设我们现在就是一个对象数组
                // 我就想对象里的属性改变了也能侦听到
                // 深度侦听
                list: {
                    deep: true,
                    handler () {
                        console.log('改变了,侦听到了')
                    }
                }
            },
            methods: {
                add () {
                    this.list.push({
                        name: '张飞',
                        job: '辅助'
                    })
                },
                change () {
                    // 一样的：通过下标改元素，默认情况下都不会被侦听到
                    // 但是这里界面会有改变
                    this.list[1].job = '辅助'

                    // 因为这里本质上不是通过下标修改数组的元素
                    // 而是在修改对象的属性！
                }
            }
        })
    </script>
</body>
</html>